package cn.itsource.hrm.handler;

import cn.itsource.hrm.dto.SendEmail;
import cn.itsource.hrm.dto.SendSMS;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.util.List;

import static cn.itsource.hrm.constant.RabiitMQConstant.*;

//消费MQ中的消息
@Component
@Slf4j
public class MQHandler {
    
    //发送邮件 
    // 需要提供一个方法处理信息 
    @RabbitListener(queues = QUEUE_INFORM_EMAIL)
    public void emailHandler(@Payload SendEmail sendEmail, Message message ,Channel channel){
        List<String> email = sendEmail.getEmail();
        String msg = sendEmail.getMsg();
        // 亲爱的用户，我们课程【javaWEB班】课程已经上线，<a href='http://www.itsource.com'>请查收。【源码时代】
        email.forEach(
                // 调用第三方发邮件...
                e->{
                    log.info(e + msg);
                }
        );
        
        try {
            // 参数：消息的标识，是否批量签收
            channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
        } catch (IOException e) {
            log.error("签收消息失败！"); 
            e.printStackTrace();
        }
    }
    
    
    //发送短信
//    @RabbitListener(queues = QUEUE_INFORM_SMS)
//    public void smsHandler(String courseName, Message msg , Channel channel){
//        //1.准备要发送的消息
//        String message = "亲爱的用户，我们课程【"+courseName+"】课程已经上线，请查收。www.itsource.cn【源码时代】";
//        //2.去用户(门户网站用户)表查询用户的手机号：待定
//        //3.发送邮件
//        System.out.println("短信发送："+message);
//    }
    
    
    
//    //发送站内信
//    @RabbitListener(queues = QUEUE_INFORM_INNER)
//    public void systemMessageHandler(String courseName, Message msg , Channel channel){
//        //1.准备要发送的消息
//        String message = "亲爱的用户，我们课程【"+courseName+"】课程已经上线，请查收。www.itsource.cn【源码时代】";
//        //2.获取到用户的ID：
//        //消息表：  id, 内容 ，用户ID ，已读/未读 ， 链接
//        //          1           1       0         www.xxx.xxx.com
//        //3.往用户的站内信表保存内容
//        System.out.println("站内信发送："+message);
//    }
    
    
}
